package de.tg.handball.data;

import java.io.Serializable;

public class TabellenEintrag implements Serializable,
		Comparable<TabellenEintrag> {

	private static final long serialVersionUID = 1L;

	private String manschaft;
	private Integer anzSpiele = 0;
	private Integer gewonnen = 0;
	private Integer verloren = 0;
	private Integer unendschieden = 0;
	private Integer eingeneTore = 0;
	private Integer gegenTore = 0;

	public TabellenEintrag(String manschaft) {
		super();
		this.manschaft = manschaft;
	}

	public String getManschaft() {
		return manschaft;
	}

	public void setManschaft(String manschaft) {
		this.manschaft = manschaft;
	}

	public Integer getAnzSpiele() {
		return anzSpiele;
	}

	public void incrementAnzSpiele() {
		this.anzSpiele++;
	}

	public Integer getGewonnen() {
		return gewonnen;
	}

	public void incrementGewonnen() {
		this.gewonnen++;
	}

	public Integer getVerloren() {
		return verloren;
	}

	public void incrementVerloren() {
		this.verloren++;
	}

	public Integer getUnendschieden() {
		return unendschieden;
	}

	public void incrementUnendschieden() {
		this.unendschieden++;
	}

	public Integer getEingeneTore() {
		return eingeneTore;
	}

	public void addEingeneTore(Integer eingeneTore) {
		this.eingeneTore += eingeneTore;
	}

	public Integer getGegenTore() {
		return gegenTore;
	}

	public void addGegenTore(Integer gegenTore) {
		this.gegenTore += gegenTore;
	}

	public String getPunkte() {
		Integer posPunkte = gewonnen * 2 + unendschieden;
		Integer gegenPunkte = verloren * 2;
		return posPunkte + ":" + (gegenPunkte + unendschieden);
	}

	public int compareTo(TabellenEintrag another) {
		Integer posPunkte = gewonnen * 2 + unendschieden;
		Integer posPunkteAnother = another.gewonnen * 2 + another.unendschieden;
		int ret = posPunkte.compareTo(posPunkteAnother);

		if (ret == 0) {
			Integer verPunkte = verloren * 2 + unendschieden;
			Integer verPunkteAnother = another.verloren * 2
					+ another.unendschieden;
			ret = verPunkteAnother.compareTo(verPunkte);
		}

		if (ret == 0) {
			Integer dif = eingeneTore - gegenTore;
			Integer difAnother = another.eingeneTore - another.gegenTore;
			ret = dif.compareTo(difAnother);
		}
		if (ret == 0)
			ret = this.manschaft.compareTo(another.manschaft);
		return ret;
	}

	@Override
	public String toString() {
		return this.manschaft + "\t" + gewonnen + "/" + unendschieden
				+ "/" + verloren + "\t" + eingeneTore + ":" + gegenTore + "\t"
				+ (eingeneTore - gegenTore) + "\t" + getPunkte();
	}
}
